Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


meshchatx/src/frontend/components/tools/RNPathPage.vue 216185c40e6c01b069cec43c7618f20c8deef7b6 (216185c4) Text, 23.32 KB

Tb4b4b4<Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col flex-1 h-full overflow-hidden bg-slate-50 dark:bg-zinc-950"Tb4b4b4>
T8b949e<!-- header -->
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"flex items-center px-4 py-4 bg-white dark:bg-zinc-900 border-b border-gray-200 dark:border-zinc-800 shadow-sm"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-3"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-2 bg-indigo-100 dark:bg-indigo-900/30 rounded-lg"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"route" Te6edf3classTff7b72=Ta5d6ff"size-6 text-indigo-600 dark:text-indigo-400" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72h1 Te6edf3classTff7b72=Ta5d6ff"text-xl font-bold text-gray-900 dark:text-white"Tb4b4b4>RNPathTb4b4b4<Tb4b4b4/Tff7b72h1Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-500 dark:text-gray-400"Tb4b4b4>Reticulum Path Management UtilityTb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"ml-auto flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"p-2 text-gray-500 hover:text-indigo-500 dark:text-gray-400 dark:hover:text-indigo-400 transition-colors"
Te6edf3titleTff7b72=Ta5d6ff"Refresh"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3refreshAllTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Te6edf3icon-nameTff7b72=Ta5d6ff"refresh"
Te6edf3classTff7b72=Ta5d6ff"size-6"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4{ Ta5d6ff'animate-spin-reverse'Tff7b72: Te6edf3isLoading Tb4b4b4}Ta5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1 overflow-y-auto p-4 md:p-6 space-y-6"Tb4b4b4>
T8b949e<!-- tabs -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex border-b border-gray-200 dark:border-zinc-800"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3t Tff7b72in Tb4b4b4[Ta5d6ff'table'Tb4b4b4, Ta5d6ff'rates'Tb4b4b4, Ta5d6ff'actions'Tb4b4b4]Ta5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3tTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"px-6 py-3 text-sm font-semibold transition-colors border-b-2 -mb-px"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4[
Te6edf3tab Tff7b72=== Te6edf3t
Tff7b72? Ta5d6ff'text-indigo-600 border-indigo-500 dark:text-indigo-400 dark:border-indigo-400'
Tff7b72: Ta5d6ff'text-gray-500 border-transparent hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200'Tb4b4b4,
Tb4b4b4]Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3tab Tff7b72= Te6edf3tTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3tTb4b4b4.Te6edf3charAtTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4.Te6edf3toUpperCaseTb4b4b4(Tb4b4b4) Tff7b72+ Te6edf3tTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff1Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- path table -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3tab Tff7b72=== Ta5d6ff'table'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"space-y-4"Tb4b4b4>
T8b949e<!-- filters -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"glass-card p-4 grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"relative"Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3searchQueryTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"Search Hash or Via..."
Te6edf3classTff7b72=Ta5d6ff"input-field pl-10"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Te6edf3icon-nameTff7b72=Ta5d6ff"magnify"
Te6edf3classTff7b72=Ta5d6ff"absolute left-3 top-1/2 -translate-y-1/2 size-5 text-gray-400"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72select Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3filterInterfaceTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"input-field"Tb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff""Tb4b4b4>All InterfacesTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3iface Tff7b72in Te6edf3interfacesTa5d6ff" Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3ifaceTa5d6ff" Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Te6edf3ifaceTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3iface Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-xs font-semibold text-gray-500 uppercase min-w-fit"Tb4b4b4>Hops:Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTb4b4b4.Te6edf3numberTff7b72=Ta5d6ff"Te6edf3filterHopsTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"0"
Te6edf3maxTff7b72=Ta5d6ff"128"
Te6edf3placeholderTff7b72=Ta5d6ff"Any"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-end gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col items-end"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-bold text-gray-400 uppercase"Tb4b4b4>TotalTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-sm font-bold"Tb4b4b4>Tff7b72{{ Te6edf3totalItems Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col items-end"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-bold text-green-500 uppercase"Tb4b4b4>ResponsiveTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-sm font-bold text-green-600 dark:text-green-400"Tb4b4b4>Tff7b72{{
Te6edf3responsiveItems
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col items-end"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-bold text-red-500 uppercase"Tb4b4b4>UnresponsiveTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-sm font-bold text-red-600 dark:text-red-400"Tb4b4b4>Tff7b72{{
Te6edf3unresponsiveItems
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3pathTableTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"glass-card p-12 text-center text-gray-500"Tb4b4b4>
No paths found matching your criteria.
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-else Te6edf3classTff7b72=Ta5d6ff"grid gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3path Tff7b72in Te6edf3pathTableTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3pathTb4b4b4.Te6edf3hashTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"glass-card p-4 flex flex-col sm:flex-row sm:items-center justify-between gap-4 border-l-4"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4[
Te6edf3pathTb4b4b4.Te6edf3state Tff7b72=== T79c0ff2
Tff7b72? Ta5d6ff'border-l-green-500'
Tff7b72: Te6edf3pathTb4b4b4.Te6edf3state Tff7b72=== T79c0ff1
Tff7b72? Ta5d6ff'border-l-red-500'
Tff7b72: Ta5d6ff'border-l-gray-300 dark:border-l-zinc-700'Tb4b4b4,
Tb4b4b4]Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"min-w-0"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap items-center gap-2 mb-1"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"font-mono text-sm font-bold text-indigo-600 dark:text-indigo-400 truncate"Tb4b4b4>
Tff7b72{{ Te6edf3pathTb4b4b4.Te6edf3hash Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3classTff7b72=Ta5d6ff"px-2 py-0.5 text-[10px] font-bold bg-indigo-50 dark:bg-indigo-900/30 text-indigo-700 dark:text-indigo-300 rounded uppercase tracking-wider"
Tb4b4b4>
Tff7b72{{ Te6edf3pathTb4b4b4.Te6edf3hops Tff7b72}} Tff7b72{{ Te6edf3pathTb4b4b4.Te6edf3hops Tff7b72=== T79c0ff1 Tff7b72? Ta5d6ff"hop" Tff7b72: Ta5d6ff"hops" Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3classTff7b72=Ta5d6ff"px-2 py-0.5 text-[10px] font-bold rounded uppercase tracking-wider"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3getStateColorTb4b4b4(Te6edf3pathTb4b4b4.Te6edf3stateTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3getStateTextTb4b4b4(Te6edf3pathTb4b4b4.Te6edf3stateTb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-gray-400 font-mono truncate"Tb4b4b4>
via Tff7b72{{ Te6edf3pathTb4b4b4.Te6edf3via Tff7b72}} on Tff7b72{{ Te6edf3pathTb4b4b4.Tff7b72interface Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap gap-x-4 gap-y-1 mt-2 text-[10px]"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-gray-400"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"font-semibold uppercase"Tb4b4b4>Last Updated:Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tff7b72{{ Te6edf3pathTb4b4b4.Te6edf3timestamp Tff7b72? Te6edf3formatDateTb4b4b4(Te6edf3pathTb4b4b4.Te6edf3timestampTb4b4b4) Tff7b72: Ta5d6ff"Unknown" Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-gray-400"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"font-semibold uppercase"Tb4b4b4>Expires:Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4> Tff7b72{{ Te6edf3formatDateTb4b4b4(Te6edf3pathTb4b4b4.Te6edf3expiresTb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3pathTb4b4b4.Te6edf3announce_hashTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"text-gray-400"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"font-semibold uppercase"Tb4b4b4>Announce Hash:Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4> Tff7b72{{ Te6edf3pathTb4b4b4.Te6edf3announce_hash Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"px-3 py-1.5 text-xs font-semibold text-red-600 hover:bg-red-50 dark:text-red-400 dark:hover:bg-red-900/20 rounded-lg transition-colors border border-red-200 dark:border-red-900/30"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3dropPathTb4b4b4(Te6edf3pathTb4b4b4.Te6edf3hashTb4b4b4)Ta5d6ff"
Tb4b4b4>
Drop Path
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- pagination -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3totalPages Tff7b72> T79c0ff1Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-between glass-card p-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"p-2 rounded-lg hover:bg-gray-100 dark:hover:bg-zinc-800 disabled:opacity-50 transition-colors"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3currentPage Tff7b72=== T79c0ff1Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3currentPageTff7b72--Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"chevron-left" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-sm font-medium"Tb4b4b4> Page Tff7b72{{ Te6edf3currentPage Tff7b72}} of Tff7b72{{ Te6edf3totalPages Tff7b72}} Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"p-2 rounded-lg hover:bg-gray-100 dark:hover:bg-zinc-800 disabled:opacity-50 transition-colors"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3currentPage Tff7b72=== Te6edf3totalPagesTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3currentPageTff7b72++Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"chevron-right" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 uppercase font-semibold"Tb4b4b4>Show:Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72select
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3itemsPerPageTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"bg-transparent border-none text-sm font-bold focus:ring-0 cursor-pointer"
Tb4b4b4>
Tb4b4b4<Tff7b72option Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"T79c0ff20Ta5d6ff"Tb4b4b4>20Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"T79c0ff50Ta5d6ff"Tb4b4b4>50Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"T79c0ff100Ta5d6ff"Tb4b4b4>100Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"T79c0ff250Ta5d6ff"Tb4b4b4>250Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- announce rates -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3tab Tff7b72=== Ta5d6ff'rates'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3rateTableTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"glass-card p-12 text-center text-gray-500"Tb4b4b4>
No announce rate data available.
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-else Te6edf3classTff7b72=Ta5d6ff"grid gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3rate Tff7b72in Te6edf3rateTableTa5d6ff" Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3rateTb4b4b4.Te6edf3hashTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"glass-card p-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col sm:flex-row sm:items-center justify-between gap-2 mb-3"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"font-mono text-sm font-bold text-indigo-600 dark:text-indigo-400 truncate"Tb4b4b4>
Tff7b72{{ Te6edf3rateTb4b4b4.Te6edf3hash Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3rateTb4b4b4.Te6edf3blocked_until Tff7b72> Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72/ T79c0ff1000Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"px-2 py-0.5 text-[10px] font-bold bg-red-100 dark:bg-red-900/30 text-red-700 dark:text-red-300 rounded"
Tb4b4b4>
RATE LIMITED
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-2 sm:grid-cols-4 gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-[10px] uppercase text-gray-500"Tb4b4b4>Last HeardTb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs font-medium"Tb4b4b4>Tff7b72{{ Te6edf3formatTimeAgoTb4b4b4(Te6edf3rateTb4b4b4.Te6edf3lastTb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-[10px] uppercase text-gray-500"Tb4b4b4>AnnouncesTb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs font-medium"Tb4b4b4>Tff7b72{{ Te6edf3rateTb4b4b4.Te6edf3timestampsTb4b4b4.Te6edf3length Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-[10px] uppercase text-gray-500"Tb4b4b4>ViolationsTb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"text-xs font-medium"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3rateTb4b4b4.Te6edf3rate_violations Tff7b72> T79c0ff0 Tff7b72? Ta5d6ff'text-red-500' Tff7b72: Ta5d6ff''Ta5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3rateTb4b4b4.Te6edf3rate_violations Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-[10px] uppercase text-gray-500"Tb4b4b4>RateTb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs font-medium"Tb4b4b4>Tff7b72{{ Te6edf3calculateRateTb4b4b4(Te6edf3rateTb4b4b4) Tff7b72}} / hrTb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- manual actions -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3tab Tff7b72=== Ta5d6ff'actions'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"max-w-2xl mx-auto space-y-6"Tb4b4b4>
T8b949e<!-- request path -->
Tb4b4b4<Tff7b72section Te6edf3classTff7b72=Ta5d6ff"glass-card p-6 space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72h2 Te6edf3classTff7b72=Ta5d6ff"text-lg font-bold"Tb4b4b4>Request PathTb4b4b4<Tb4b4b4/Tff7b72h2Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-500"Tb4b4b4>Broadcast a path request for a destination hash.Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3requestHashTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"Destination Hash (32 hex chars)"
Te6edf3classTff7b72=Ta5d6ff"input-field flex-1 font-mono"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"px-4 py-2 bg-indigo-600 text-white rounded-xl font-semibold hover:bg-indigo-500 transition shadow-lg shadow-indigo-500/20 active:scale-95 disabled:opacity-50"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3requestHashTb4b4b4.Te6edf3length Tff7b72!== T79c0ff32Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3requestPathTa5d6ff"
Tb4b4b4>
Request
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72sectionTb4b4b4>

T8b949e<!-- drop all via -->
Tb4b4b4<Tff7b72section Te6edf3classTff7b72=Ta5d6ff"glass-card p-6 space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72h2 Te6edf3classTff7b72=Ta5d6ff"text-lg font-bold"Tb4b4b4>Drop All ViaTb4b4b4<Tb4b4b4/Tff7b72h2Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-500"Tb4b4b4>
Remove all known paths routed through a specific transport instance.
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3dropViaHashTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"Transport Instance Hash"
Te6edf3classTff7b72=Ta5d6ff"input-field flex-1 font-mono"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"px-4 py-2 bg-red-600 text-white rounded-xl font-semibold hover:bg-red-500 transition shadow-lg shadow-red-500/20 active:scale-95 disabled:opacity-50"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3dropViaHashTb4b4b4.Te6edf3length Tff7b72!== T79c0ff32Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3dropAllViaTa5d6ff"
Tb4b4b4>
Drop All
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72sectionTb4b4b4>

T8b949e<!-- drop queues -->
Tb4b4b4<Tff7b72section Te6edf3classTff7b72=Ta5d6ff"glass-card p-6 space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72h2 Te6edf3classTff7b72=Ta5d6ff"text-lg font-bold"Tb4b4b4>Drop Announce QueuesTb4b4b4<Tb4b4b4/Tff7b72h2Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-500"Tb4b4b4>
Clear all outbound announce packets currently queued on all interfaces.
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"w-full px-4 py-3 bg-zinc-800 text-white rounded-xl font-semibold hover:bg-zinc-700 transition active:scale-95"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3dropAnnounceQueuesTa5d6ff"
Tb4b4b4>
Purge All Queues
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72sectionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>

Tb4b4b4<Tff7b72scriptTb4b4b4>
Tff7b72import Te6edf3MaterialDesignIcon Tff7b72from Ta5d6ff"../MaterialDesignIcon.vue"Tb4b4b4;
Tff7b72import Te6edf3ToastUtils Tff7b72from Ta5d6ff"../../js/ToastUtils"Tb4b4b4;
Tff7b72import Te6edf3DialogUtils Tff7b72from Ta5d6ff"../../js/DialogUtils"Tb4b4b4;
Tff7b72import Te6edf3Utils Tff7b72from Ta5d6ff"../../js/Utils"Tb4b4b4;

Tff7b72export Tff7b72default Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"RNPathPage"Tb4b4b4,
Te6edf3componentsTff7b72: Tb4b4b4{
Te6edf3MaterialDesignIconTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3dataTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{
Te6edf3tabTff7b72: Ta5d6ff"table"Tb4b4b4,
Te6edf3isLoadingTff7b72: Tff7b72falseTb4b4b4,
Te6edf3pathTableTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3rateTableTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3requestHashTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3dropViaHashTff7b72: Ta5d6ff""Tb4b4b4,
T8b949e// Pagination & Filtering
Te6edf3searchQueryTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3filterInterfaceTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3filterHopsTff7b72: Tff7b72nullTb4b4b4,
Te6edf3currentPageTff7b72: T79c0ff1Tb4b4b4,
Te6edf3itemsPerPageTff7b72: T79c0ff50Tb4b4b4,
Te6edf3totalItemsTff7b72: T79c0ff0Tb4b4b4,
Te6edf3responsiveItemsTff7b72: T79c0ff0Tb4b4b4,
Te6edf3unresponsiveItemsTff7b72: T79c0ff0Tb4b4b4,
Te6edf3interfacesTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3computedTff7b72: Tb4b4b4{
Te6edf3totalPagesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tffa657MathTb4b4b4.Te6edf3ceilTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3totalItems Tff7b72/ Tff7b72thisTb4b4b4.Te6edf3itemsPerPageTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3watchTff7b72: Tb4b4b4{
Te6edf3searchQueryTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3currentPage Tff7b72= T79c0ff1Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3refreshTableTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3filterInterfaceTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3currentPage Tff7b72= T79c0ff1Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3refreshTableTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3filterHopsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3currentPage Tff7b72= T79c0ff1Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3refreshTableTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3currentPageTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3refreshTableTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3mountedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3refreshAllTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3methodsTff7b72: Tb4b4b4{
Tff7b72async Te6edf3refreshAllTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isLoading Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Tb4b4b4[Te6edf3pathResTb4b4b4, Te6edf3rateResTb4b4b4, Te6edf3ifaceResTb4b4b4] Tff7b72= Tff7b72await Tffa657PromiseTb4b4b4.Te6edf3allTb4b4b4(Tb4b4b4[
Tff7b72thisTb4b4b4.Te6edf3fetchPathTableTb4b4b4(Tb4b4b4)Tb4b4b4,
Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/rnpath/rates"Tb4b4b4)Tb4b4b4,
Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/reticulum/interfaces"Tb4b4b4)Tb4b4b4,
Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3pathTable Tff7b72= Te6edf3pathResTb4b4b4.Te6edf3tableTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3totalItems Tff7b72= Te6edf3pathResTb4b4b4.Te6edf3totalTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3responsiveItems Tff7b72= Te6edf3pathResTb4b4b4.Te6edf3responsiveTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3unresponsiveItems Tff7b72= Te6edf3pathResTb4b4b4.Te6edf3unresponsiveTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3rateTable Tff7b72= Te6edf3rateResTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3ratesTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3interfaces Tff7b72= Tffa657ObjectTb4b4b4.Te6edf3keysTb4b4b4(Te6edf3ifaceResTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3interfacesTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnpath.failed_fetch"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isLoading Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3refreshTableTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isLoading Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3res Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3fetchPathTableTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3pathTable Tff7b72= Te6edf3resTb4b4b4.Te6edf3tableTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3totalItems Tff7b72= Te6edf3resTb4b4b4.Te6edf3totalTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3responsiveItems Tff7b72= Te6edf3resTb4b4b4.Te6edf3responsiveTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3unresponsiveItems Tff7b72= Te6edf3resTb4b4b4.Te6edf3unresponsiveTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isLoading Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3fetchPathTableTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3params Tff7b72= Tb4b4b4{
Te6edf3pageTff7b72: Tff7b72thisTb4b4b4.Te6edf3currentPageTb4b4b4,
Te6edf3limitTff7b72: Tff7b72thisTb4b4b4.Te6edf3itemsPerPageTb4b4b4,
Te6edf3searchTff7b72: Tff7b72thisTb4b4b4.Te6edf3searchQuery Tff7b72|| Tff7b72undefinedTb4b4b4,
Tff7b72interfaceTff7b72: Tff7b72thisTb4b4b4.Te6edf3filterInterface Tff7b72|| Tff7b72undefinedTb4b4b4,
Te6edf3hopsTff7b72: Tff7b72thisTb4b4b4.Te6edf3filterHops Tff7b72!== Tff7b72null Tff7b72? Tff7b72thisTb4b4b4.Te6edf3filterHops Tff7b72: Tff7b72undefinedTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72const Te6edf3res Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/rnpath/table"Tb4b4b4, Tb4b4b4{ Te6edf3params Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3resTb4b4b4.Te6edf3dataTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3getStateColorTb4b4b4(Te6edf3stateTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3state Tff7b72=== T79c0ff2Tb4b4b4) Tff7b72return Ta5d6ff"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-300"Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3state Tff7b72=== T79c0ff1Tb4b4b4) Tff7b72return Ta5d6ff"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-300"Tb4b4b4;
Tff7b72return Ta5d6ff"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-400"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3getStateTextTb4b4b4(Te6edf3stateTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3state Tff7b72=== T79c0ff2Tb4b4b4) Tff7b72return Ta5d6ff"RESPONSIVE"Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3state Tff7b72=== T79c0ff1Tb4b4b4) Tff7b72return Ta5d6ff"UNRESPONSIVE"Tb4b4b4;
Tff7b72return Ta5d6ff"UNKNOWN"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3dropPathTb4b4b4(Te6edf3hashTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tb4b4b4(Tff7b72await Te6edf3DialogUtilsTb4b4b4.Te6edf3confirmTb4b4b4(Ta5d6ff`Ta5d6ffAre you sure you want to drop the path to Tffd700${Te6edf3hashTffd700}Ta5d6ff?Ta5d6ff`Tb4b4b4)Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3res Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/rnpath/drop"Tb4b4b4, Tb4b4b4{ Te6edf3destination_hashTff7b72: Te6edf3hash Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3resTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3successTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnpath.path_dropped"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3refreshAllTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnpath.failed_drop"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnpath.error_drop"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3requestPathTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/rnpath/request"Tb4b4b4, Tb4b4b4{ Te6edf3destination_hashTff7b72: Tff7b72thisTb4b4b4.Te6edf3requestHash Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Ta5d6ff`Ta5d6ffPath requested for Tffd700${Tff7b72thisTb4b4b4.Te6edf3requestHashTb4b4b4.Te6edf3substringTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff8Tb4b4b4)Tffd700}Ta5d6ff...Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3requestHash Tff7b72= Ta5d6ff""Tb4b4b4;
T8b949e// Path requests take time, don't refresh immediately
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnpath.failed_request"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3dropAllViaTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tb4b4b4(Tff7b72await Te6edf3DialogUtilsTb4b4b4.Te6edf3confirmTb4b4b4(Ta5d6ff`Ta5d6ffDrop ALL paths via Tffd700${Tff7b72thisTb4b4b4.Te6edf3dropViaHashTffd700}Ta5d6ff?Ta5d6ff`Tb4b4b4)Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3res Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/rnpath/drop-via"Tb4b4b4, Tb4b4b4{
Te6edf3transport_instance_hashTff7b72: Tff7b72thisTb4b4b4.Te6edf3dropViaHashTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3resTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3successTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnpath.paths_dropped"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3dropViaHash Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3refreshAllTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnpath.failed_drop_paths"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3dropAnnounceQueuesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tb4b4b4(Tff7b72await Te6edf3DialogUtilsTb4b4b4.Te6edf3confirmTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnpath.purge_confirm"Tb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/rnpath/drop-queues"Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnpath.queues_purged"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnpath.failed_purge"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3calculateRateTb4b4b4(Te6edf3rateTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3rateTb4b4b4.Te6edf3timestampsTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Tb4b4b4) Tff7b72return T79c0ff0Tb4b4b4;
Tff7b72const Te6edf3startTs Tff7b72= Te6edf3rateTb4b4b4.Te6edf3timestampsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3span Tff7b72= Tffa657MathTb4b4b4.Te6edf3maxTb4b4b4(Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72/ T79c0ff1000 Tff7b72- Te6edf3startTsTb4b4b4, T79c0ff3600.0Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3spanHours Tff7b72= Te6edf3span Tff7b72/ T79c0ff3600.0Tb4b4b4;
Tff7b72return Tb4b4b4(Te6edf3rateTb4b4b4.Te6edf3timestampsTb4b4b4.Te6edf3length Tff7b72/ Te6edf3spanHoursTb4b4b4)Tb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff2Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3formatDateTb4b4b4(Te6edf3tsTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72new Tffa657DateTb4b4b4(Te6edf3ts Tff7b72* T79c0ff1000Tb4b4b4)Tb4b4b4.Te6edf3toLocaleStringTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3formatTimeAgoTb4b4b4(Te6edf3tsTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3UtilsTb4b4b4.Te6edf3formatSecondsAgoTb4b4b4(Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72/ T79c0ff1000 Tff7b72- Te6edf3tsTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4<Tb4b4b4/Tff7b72scriptTb4b4b4>

Tb4b4b4<Tff7b72style Te6edf3scopedTb4b4b4>
Tb4b4b4.T56d364glass-card Tb4b4b4{
@apply bg-white/90 Te6edf3darkTb4b4b4:Te6edf3bg-zinc-900Tff7b72/T79c0ff80 Te6edf3backdrop-blur Tff7b72border Tff7b72borderTff7b72-Tff7b72grayT79c0ff-200 Te6edf3darkTff7b72:Tff7b72borderTff7b72-Te6edf3zinc-800 Te6edf3rounded-2xl Te6edf3shadow-lgTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364input-field Tb4b4b4{
@apply bg-gray-50/90 Te6edf3darkTb4b4b4:Te6edf3bg-zinc-800Tff7b72/T79c0ff80 Tff7b72border Tff7b72borderTff7b72-Tff7b72grayT79c0ff-200 Te6edf3darkTff7b72:Tff7b72borderTff7b72-Te6edf3zinc-700 Tff7b72textTff7b72-Te6edf3sm Te6edf3rounded-xl Te6edf3focusTff7b72:Te6edf3ring-2 Te6edf3focusTff7b72:Te6edf3ring-indigo-400 Te6edf3focusTff7b72:Tff7b72borderTff7b72-Tff7b72indigoT79c0ff-400 Te6edf3darkTff7b72:Te6edf3focusTff7b72:Te6edf3ring-indigo-500 Te6edf3darkTff7b72:Te6edf3focusTff7b72:Tff7b72borderTff7b72-Tff7b72indigoT79c0ff-500 Tff7b72block Te6edf3w-full Te6edf3p-3 Tff7b72textTff7b72-Tff7b72grayT79c0ff-900 Te6edf3darkTff7b72:Tff7b72textTff7b72-Tff7b72grayT79c0ff-100 Tff7b72transitionTb4b4b4;
Tb4b4b4}
Tb4b4b4<Tb4b4b4/Tff7b72styleTb4b4b4>


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────